const studentModel = require('../model/studentModel');
const classModel = require('../model/classModel');
// 查询所有学生
module.exports.find = async function(searchObj,page){
    // 分页查询
    let {current,size} = page;
    // 获取数据总数
    let total = await studentModel.countDocuments(searchObj)
    // 根据总数/每页显示数得到总页数
    let totalPage = Math.ceil(total / size);
    // limit是每页显示数，skip通过(当前页-1) * 每页显示得到
    let rows = await studentModel
                .find(searchObj)
                .populate({path:'cls'})
                .limit(parseInt(size))
                .skip((current - 1) * size);
    return {
        current,size,total,totalPage,rows
    }
}
// 根据班级名称查询学生
module.exports.findByClassName = async function(className,page){
    // 分页查询
    let {current,size} = page;
    // 将学生信息全部查询出来
    let rows = await studentModel
                .find()
                .populate({path:'cls'})
    // 过滤数组
    newRows = rows.filter((item) => item.cls && item.cls.name == className);
    // 获取总数
    let total = newRows.length;
    // 根据总数/每页显示数得到总页数
    let totalPage = Math.ceil(total / size);
    rows = newRows.slice((current - 1) * size,current * size);
    return {
        current,size,total,totalPage,rows
    }
    
}
// 根据ID查询学生
module.exports.findById = async function(id){
    return await studentModel.findById(id);
}
// 增加学生
module.exports.insert = async function(student){
    return await studentModel.create(student);
}
// 修改学生
module.exports.update = async function(id,student){
    return await studentModel.updateOne({_id:id},student);
}
// 根据ID删除学生
module.exports.delete = async function(id){
    return await studentModel.deleteOne({_id:id});
}